Вираз SQL CASE переглядає умови та повертає значення, коли виконується перша умова (наприклад, оператор if-then-else). Отже, як тільки умова виконується, інструкція припинить читання та поверне результат. Якщо жодна умова не виконується, повертається значення в реченні ELSE.
Якщо немає частини ELSE і умови не виконуються, повертається NULL.
SELECT column1, column2, ...
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END
Нижче наведено вибірку з таблиці "OrderDetails" бази даних "Northwind":
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
Наступна SQL-інструкція перевіряє умови та повертає значення, коли виконується перша умова:
Run SQLSELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails
Даний SQL-запит сортує клієнтів за містом (City). Однак, якщо місто дорівнює NULL, сортує за країною (Country):
Run SQLSELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END)